As a representative technology for a virtual machine that executes programs without being dependent upon a specific platform, there is a technology that uses the Java (registered trademark) language. To be specific, the Java Virtual Machine (Java VM; program execution control program) that interprets and executes Java byte code is an example of such a technology.
However, byte code has a large overhead and a poor execution time compared to native code that is able to be directly interpreted by a processor. Therefore, for example, dynamic compilation from byte code to native code is performed by a just-in-time (JIT) compiler when a program is executed. Thus, byte code is converted into native code, and the speed of processing is increased (for example, Japanese Laid-open Patent Publication No. 11-237989, and Japanese Laid-open Patent Publication No. 2004-355277).
For example, compilation from byte code to native code in a Java VM is performed when the execution count of a program has exceeded a set value. At such time, the Java VM waits for the completion of compilation, and executes the generated native code when the compilation is completed. Alternatively, for example, in the Java VM, compilation to native code is performed parallel with the execution of processing by byte code. In this case, the Java VM executes byte code until the compilation is completed, and executes native code as soon as the compilation is completed.